GtkGesture *drag_gesture;
GtkGesture *multipress_gesture;
+ GtkEventController *motion_controller;
GtkWidget *progress_widget;
GtkCssNode *selection_node;
}
}
+static void
+set_text_cursor (GtkWidget *widget)
+{
+ gtk_widget_set_cursor_from_name (widget, "text");
+}
+
+static void
+entry_motion_cb (GtkEventControllerMotion *event_controller,
+ double x,
+ double y,
+ gpointer user_data)
+{
+ GtkEntry *entry = user_data;
+ GtkEntryPrivate *priv = gtk_entry_get_instance_private (entry);
+
+ if (priv->mouse_cursor_obscured)
+ {
+ set_text_cursor (GTK_WIDGET (entry));
+ priv->mouse_cursor_obscured = FALSE;
+ }
+}
+
static gunichar
find_invisible_char (GtkWidget *widget)
{
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (priv->multipress_gesture), 0);
gtk_gesture_single_set_exclusive (GTK_GESTURE_SINGLE (priv->multipress_gesture), TRUE);
+ priv->motion_controller = gtk_event_controller_motion_new (GTK_WIDGET (entry));
+ g_signal_connect (priv->motion_controller, "motion",
+ G_CALLBACK (entry_motion_cb), entry);
+
widget_node = gtk_widget_get_css_node (GTK_WIDGET (entry));
for (i = 0; i < 2; i++)
{
g_clear_object (&priv->drag_gesture);
g_clear_object (&priv->multipress_gesture);
+ g_clear_object (&priv->motion_controller);
if (priv->tabs)
pango_tab_array_free (priv->tabs);
}
}
-static void
-set_text_cursor (GtkWidget *widget)
-{
- gtk_widget_set_cursor_from_name (widget, "text");
-}
-
static void
update_cursors (GtkWidget *widget)
{
return GDK_EVENT_PROPAGATE;
}
- if (gdk_event_get_event_type (event) == GDK_MOTION_NOTIFY &&
- priv->mouse_cursor_obscured)
- {
- set_text_cursor (widget);
- priv->mouse_cursor_obscured = FALSE;
- return GDK_EVENT_PROPAGATE;
- }
-
if (!gdk_event_get_coords (event, &x, &y))
return GDK_EVENT_PROPAGATE;